public class ReadMe {
    /**
     * 2022-11-29 web核心
     * 1.html
     *      1）请求
     *          请求行，请求头，请求体
     *      2）响应
     *          响应行，响应头，响应体
     * 2.tomcat  下载安装
     *      1）不建议大家下载压缩包
     *      2）不建议大家下载老版本：最好9.0以上
     *      3）不建议大家安装到其他盘（建议C盘）
     *      4）安装的时候将port设置为大于0;
     * 3.在idea里面配置tomcat
     * 4.配置servlet
     *      1）init只会打印一次：表示项目启动后只做一次
     *      2）service 表示每次访问都会执行一次
     *      3)以后具体用get或者post的方法？应该知道get/post的区别！
     *          get 一般用于小量参数传递，用于查询普通数据
     *          post 一般用于大量参数传递，文件传递，二进制，流传递，大小没有限制
     *                  一般用于修改，增加，删除等操作，用于敏感信息传递
     * ----------------------------------------------------
     * web前端访问后台需要做的几件事情？
     * 1.配置tomcat
     * 2.创建servlet的类，继承HttpServlet
     * 3.根据前端请求方式重写对应的doGet或者doPost方法
     * 4.创建前端请求后台的路径：@WebServlet("/test")
     * --------------------------
     * http状态码：1**，2**(成功)，3**，4**（前端找不到后台），5**（后台出错误）
     * 5.下载安装postman进行测试
     * ----------------------
     * 面试的时候会问？
     * 1.servlet的生命周期？
     * 2.doGet和doPost的区别？
     * 3.http的状态码？
     * 4.servlet的正常打包和发布到容器
     *
     */
    /**
     * 2022-11-30 req和resp
     * 1.通过req取得里面的值
     *      1）得到方法  getMethod()
     *      2)得到路径 req.getRequestURI()|req.getServletPath()
     *      3)得到前端传递过来的参数：req.getParameter("username")
     *      4）乱码解决
     *         req.setCharacterEncoding("UTF-8");
     *         resp.setCharacterEncoding("UTF-8");
     *       5）返回给前端
     *       resp.getWriter().println(username);
     * 2.页面转发：req.getRequestDispatcher("index.jsp").forward(req, resp);
     * 3.重定向：resp.sendRedirect("index.jsp");
     * 4.如果页面是form表单，则req.getParameter("username");里面的username和页面的
     *     <input type="text" name="username"> name值相对于
     * 5.今天这节课的主要任务：
     *      1）怎么在后台拿到前端的值？req.getParameter("username")
     *      2）怎么在前端拿到后台的值？
     *          1.如果是jsp页面 ${username}
     *          2.如果是html，或者直接传递到前端 resp.getWriter().println(aa);
     *      3）理解，页面转发和重定向的区别？
     *      4）servlet的作用域？资源共享？ request，session，application
     *          1.req不能跨页面进行资源共享
     *          2.req.getSession()   session  可以跨页面进行资源共享
     *          3.req.getServletContext().setAttribute("username", aa + "123");
     *              跨浏览器资源共享  application
     *      5）对请求头进行取值赋值  set 赋值  get 取值
     */
    /**
     * 2022-12-1 jsp
     * 上一节课你们需要掌握的知识点：
     * request：主要方法，请求对象，前端请求后台
     *  1.，getHeader得到请求头
     *  2.req.getParameter("username")得到前端传递过来的值
     *  3.req.setCharacterEncoding("UTF-8");处理乱码
     *  4.req.setAttribute("username","123"); 进行作用域赋值，不能跨页面
     *  5.req.getSession().setAttribute("username","123"); 可以跨页面
     *  6.req.getServletContext().setAttribute("username","123");可以跨浏览器
     *  7.req.getRequestDispatcher("success.html").forward(req, resp);请求将数据放入req里面然后进行页面转发
     * response:主要方法，响应对象，响应给前端
     *  1.resp.setCharacterEncoding("UTF-8");乱码处理
     *  2.resp.getWriter().println(aa); 发送值给前端
     *  3.resp.sendRedirect("index.jsp"); 重定向
     *  -------------------------------------------
     *  jsp:java service page
     *  1.el表达式  ${}
     *  2.jsp标签  c:if  c:for
     *  3.三层架构和MVC模式的区别？
     *  三层架构：
     *  1）servlet  页面控制层   主要和页面打交道（jsp）
     *  2）service  服务逻辑层   处理逻辑关系的
     *  3）dao   数据持久层      保存数据的地方
     *
     *  -----------------------
     *  案例：设置品牌，增删改查的操作CRUD
     *      1.增加：
     *          1）servlet  六大步骤
     *          2）service  调用dao层进行数据存储
     *          3)dao 层  处理数据
     *      2。jsp页面：根据servlet返回的值处理不同的逻辑
     *      3.点击修改，
     *          1）需要传递一个id，根据id查询数据，然后显示在修改页面
     *          2）点击修改按钮进行修改，将以前的数据进行覆盖
     *
     */
    /**
     * 2022-12-2 项目修改为jsp项目
     * 1.jsp 里面的el表达式和标签
     * 2.MVC
     *      M model  javabean
     *           1,属性全部私有
     *           2，必须有午餐构造方法
     *           3，所有属性全部通过get/set方法获取
     *      C controller 页面控制层 servlet 层
     *           1.乱码处理
     *           2.得到前端的值
     *           3.将前端取得的值进行封装(第四阶段我们会把值封装到VO view object)
     *           4.调用服务逻辑层  service
     *           5.得到返回值
     *           6.将返回值返回给前端
     *       V view  视图  JSP页面
     *           1.进行表单提交（增加，修改）
     *           2.展示页面 查询数据
     *           3.进行其他操作，删除  跳转页面
     * 三层架构
     *      1.页面控制层
     *          1）jsp
     *          2）servlet
     *      2.服务逻辑层
     *          1）写逻辑判断的地方
     *          2）调用数据持久层的地方
     *          3）返回数据给上层（servlet层）
     *      3.数据持久层
     *          1）数据保存
     *          2）得到保存的数据
     *          3）对保存的数据进行操作
     *          4）将操作后的值返回给上层（service）
     *--------------------------------------------------------
     * 将html静态项目修改为javaweb项目
     * 1.将第一阶段的项目复制到第三阶段的web里面，创建一个jsp文件夹（包）
     * 2.将html页面转换为jsp页面
     *      问题？为什么会出现jsp？
     *      1.数据传输比较方法，
     *      2.jsp的目的就是为了解决Java程序员对前端js的不熟
     *      3.怎么引入jsp页面？<jsp:include page="foot.jsp"/>
     * 3.页面的数据应该来源于Java后台，Java后台的数据应该在dao层
     *      1.哪些数据应该从后台来？用户想要修改的数据都应该从后台来
     *      2.一个页面有很多的数据，我们应该怎么放到Java后台？怎么提取数据？
     *      3.提取的数据应该怎么放？放到容器里面
     *      4.所有的数据都存在一个容器里面吗？
     *      5.页面不同的数据应该用不同的容器来装
     *      6.怎么将页面分为不同的对象？不同的容器？
     *      7.在第一阶段的时候，已经做了一个简单的对象区分。
     *      8.将对象包含哪些属性，并用英文描述出来（为JavaBean做准备）CompanyModel
     * 4.写出JavaBean对象：能够完整的利用工具er图将对象描述出来
     * 5.如果前端页面有很多值，而且这些值都是属于一个对象，那么直接传递对象即可
     * 6.数据来源于dao层，所以创建一个dao存放刚刚的数据
     * 7.一个页面一个servlet，一个对象一个service，一个model，一个dao层
     * 8.service
     * 9.dao
     * -------------------------------------------------
     * 公司数据的获取
     * 1.创建JavaBean   model层 属性get/set方法和构造方法
     * 2.创建dao层   封装数据存放数据的地方  给外部一个调用方法并返回数据
     * 3.创建service 调用dao层并得到数据，返回给上层
     * 4.创建servlet  将数据从service里面获取，并存入作用域，然后页面转发
     * 5.在jsp页面进行赋值  ${companyModel.logo}
     * ---------------------------------------------------
     * 导航数据的获取：
     * 1.创建导航的JavaBean  NavModel
     * 2.创建dao层  封装导航数据，并提供外部接口返回数据
     * 3.创建service 调用dao层，得到数据并返回
     * 4.创建servlet  调用service 并存入作用域然后页面转发
     * 5.在jsp里面或者数据
     * ----------------------------
     * 点击导航的时候，应该可以跳转页面，跳转页面的时候，还可以拿到后台数据
     * 所以，应该写servlet，在里面进行页面转发
     * jsp的页面最好不要直接访问页面http://localhost:8080/jsp/index.jsp
     * 建议以后访问后台接口http://localhost:8080/index
     * ------------------------------
     * 对于头部和底部的公共数据可以提取公共的类
     * ------------------------------------
     * 产品信息
     *  1.创建model
     *  2.创建dao
     *  3.创建service
     *  4.创建servlet
     *  5.在jsp页面获取数据
     *  --------------------------------
     *  你们的任务：
     *  1.将你们自己的项目改造为jsp项目
     *  2.把自己当作用户，你们认为哪些数据是提取的，就将数据放入后台，然后显示在页面上
     *
     *
     *
     */
    /**
     * 2022-12-5 session和filter
     * 1.cookie  跨浏览器不能访问  会话期结束还存在  重启后还存在
     * 2.session 也不能跨浏览器访问  会话期结束不存在  重启后不存在
     * 3.setMaxAge 设置cookie在浏览器的过期时间
     * --------------------------------------
     * 验证码的目的：不能通过机器进行识别，防止攻击服务器进行自动注册
     * 验证码原理:
     *      1.创建一个空白的图片
     *      2.对图片设置一个背景
     *      3.生成一个随机的字符串,将字符串存入session
     *      4.将字符串写入到图片
     *      5.在字符串上面加一些干扰线
     *      6.将图片发送给前端
     *------------------------------------
     * 登录逻辑：
     *      1.打开登录页面
     *      2.输入用户信息和验证码
     *      3.在Java后台得到用户信息和验证码
     *      4.首先判断验证码是否正确，如果不正确，则跳转到验证码不正确页面
     *      5.如果验证码正确，则判断用户名和密码是否正确，如果不正确，则跳转到用户名或者密码错误页面
     *      6.如果正确，则跳转到后台管理系统页面
     *-------------------------------------------------
     * cookie  赋值取值
     * session  赋值取值
     * 理解他们的区别？
     * 验证码（了解），你们可以直接拿我的代码
     * 过滤器：对有权限的进行判断，是否有登录的资格
     * 否则直接放行chain.doFilter(req, res);
     */

}
